home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / I-Info Magazine / (c)i19.d64 / form maker 2a (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  9KB  |  260 lines

  1. 10 REM     *** LFS FORM MAKER2A ***
  2. 20 REM
  3. 30 REM         7/9/87 VERSION
  4. 32 REM    FOR STAR SG-10C AND SL-10C
  5. 34 REM
  6. 36 REM THANKS TO UNCLE DUD FOR FIXES IN
  7. 38 REM  LINES 1050,1060,1090,1120,1165
  8. 40 REM
  9. 50 REM         COPYRIGHT, 1987
  10. 60 REM         LOUIS F. SANDER
  11. 70 REM         153 MAYER DRIVE
  12. 80 REM      PITTSBURGH, PA  15237
  13. 90 REM
  14. 120 REM *** MAIN LOOP
  15. 130 GOSUB190:REM INITIALIZE
  16. 140 GOSUB270:REM MAIN MENU
  17. 150 ON A GOSUB390,640,930,1250,1470:REM MENU SELECTIONS
  18. 160 RUN
  19. 170 :
  20. 180 REM *** INITIALIZE
  21. 190 DIM CW%(255),LL$(255),RL$(255)
  22. 200 PW=80:PI=11:K1=631:K2=198:IFPEEK(65534)<>72THENK1=842:K2=208:REM 64OR128?
  23. 210 EM$="       [158] ERROR! MUST BE AT LEAST 1 ":Q$=CHR$(34)
  24. 220 R$=CHR$(13):TL$="[147][158][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
  25. 230 POKE53280,6:POKE53281,6
  26. 240 RETURN
  27. 250 :
  28. 260 REM *** MAIN MENU
  29. 270 PRINTTL$;" LFS FORM MAKER - LOUIS F. SANDER - 5/87"
  30. 275 PRINT"[145]   FOR STAR SG-10C AND SL-10C PRINTERS  [146][160]"
  31. 280 PRINT"[153]THIS LETS YOU DESIGN FORMS. SELECT:"
  32. 290 PRINT"    1 - CREATE A NEW FORM
  33. 300 [153]"    2 - EDIT AN EXISTING FORM
  34. 310 PRINT"    3 - PRINT AN EXISTING FORM
  35. 320 [153]"    4 - INSTRUCTIONS
  36. 330 PRINT"    5 - QUIT
  37. 340 [161]A$:[139]A$[178]""[167]340
  38. 350 A[178][197](A$):[139]A[179]1[176]A[177]5[167]340
  39. 360 [142]
  40. 370 :
  41. 380 [143] *** CREATE
  42. 390 [153]TL$;"           CREATE A NEW FORM            WAITCLOSE"
  43. 400 [153]"PRINTTHIS LETS YOU CREATE A NEW FORM AND
  44. 410 PRINT"SAVE IT ONTO YOUR DISK.
  45. 420 [153]"PRESS <RETURN> TO RETURN TO THE MENU,
  46. 430 PRINT"OR PRESS ANY OTHER KEY TO CONTINUE...
  47. 440 [161]A$:[139]A$[178]""[167]440
  48. 450 [139]A$[178]R$[167]610
  49. 460 [141]1660
  50. 470 [133]"     PRINT A COPY NOW (Y OR N)  YCMDCMDCMD";A$
  51. 480 [139][200](A$,1)[178]"Y"[167][141]960
  52. 490 [153]"PRINTTO SAVE THE FORM AS A FILE ON THE DISK,
  53. 500 PRINT"YOU MUST GIVE IT A UNIQUE FILE NAME OF"
  54. 510 PRINT"14 CHARACTERS OR FEWER.
  55. 520 [153]"SAVED FORMS CAN EASILY BE PRINTED OR
  56. 530 PRINT"EDITED USING OPTIONS FROM THE MAIN MENU.
  57. 540 [153]"ENTER THE FORM NAME NOW, OR PRESS
  58. 550 PRINT"<RETURN> TO RETURN TO THE MENU.
  59. 560 [153][163]15);"LISTTAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(ONON"
  60. 570 F$[178]"":[133]"    FORM NAME";F$:F$[178]"F/"[170]F$:[139]F$[178]"F/"[167][138]
  61. 580 [159]15,8,15:[159]2,8,2,F$[170]",S,W"
  62. 590 [132]15,A,A$:[139]A[177]19[167][160]2:[160]15:[153]"SYS ";A$;" ":[137]560
  63. 600 [141]2500
  64. 610 [142]
  65. 620 :
  66. 630 [143] *** EDIT
  67. 640 [153]TL$;"         EDIT AN EXISTING FORM          WAITCLOSE"
  68. 650 [153]"PRINTTHIS LETS YOU LOAD AND MODIFY AN
  69. 660 PRINT"EXISTING FORM. YOU CAN THEN SAVE IT
  70. 670 [153]"UNDER THE SAME NAME OR A NEW ONE.
  71. 680 GOSUB1510
  72. 690 OF$=F$
  73. 700 GOSUB1660
  74. 710 INPUT"     PRINT A COPY NOW (Y OR N)  Y[157][157][157]";A$
  75. 720 IFLEFT$(A$,1)="Y"THENGOSUB960
  76. 730 PRINT"[153]TO SAVE THE FORM AS A FILE ON THE DISK,
  77. 740 [153]"YOU MUST GIVE IT A UNIQUE FILE NAME OF"
  78. 750 [153]"14 CHARACTERS OR FEWER.
  79. 760 PRINT"SAVED FORMS CAN EASILY BE PRINTED OR
  80. 770 [153]"EDITED USING OPTIONS FROM THE MAIN MENU.
  81. 780 PRINT"[153]ENTER THE NEW NAME UNDER WHICH YOU WANT
  82. 790 [153]"TO SAVE THE EDITED FORM, OR PRESS
  83. 800 PRINT"<RETURN> TO RETURN TO THE MAIN MENU."
  84. 810 PRINT"'@[153]' WILL SAVE IT UNDER ITS ORIGINAL
  85. 820 [153]"NAME, WHICH IS ";[202](OF$,3);"PRINT"
  86. 830 [153][163]15);"LISTTAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(ONON"
  87. 840 F$[178]"":[133]"    FORM NAME";F$:F$[178]"F/"[170]F$
  88. 850 [139]F$[178]"F/"[167]900
  89. 860 [159]15,8,15:[139]F$[178]"F/@"[167]F$[178]OF$:[152]15,"S0:"[170]F$
  90. 870 [159]2,8,2,F$[170]",S,W"
  91. 880 [132]15,A,A$:[139]A[177]19[167][160]2:[160]15:[153]"SYS ";A$;" ":[137]830
  92. 890 [141]2500
  93. 900 [142]
  94. 910 :
  95. 920 [143] *** PRINT
  96. 930 [153]TL$;"         PRINT AN EXISTING FORM         WAITCLOSE"
  97. 940 [153]"PRINTTHIS LETS YOU LOAD AND PRINT A FORM THATHAS BEEN SAVED ON THE DISK.
  98. 950 GOSUB1510
  99. 960 PRINT"[153]THE FORM IS" LEFT$(STR$((LW+W)/10),5);Q$;" WIDE BY";
  100. 970 PRINTLEFT$(STR$(TL%/9),5);Q$;" LONG,"
  101. 980 PRINT"OR";LW+W;"SPACES WIDE BY";TL%;"LINES LONG."
  102. 990 PRINT"[153]";:OPEN15,4,15:CLOSE15:IFSTTHENPRINT"PUT THE PRINTER ONLINE,
  103. 1000 [153]"ALIGN THE PAPER IN THE PRINTER,
  104. 1010 PRINT"THEN PRESS THE 'P[153]' KEY...          "
  105. 1020 GETA$:IFA$<>"P"THEN1020
  106. 1030 OPEN15,4,15:CLOSE15:IFSTTHENPRINT"[158] PRINTER IS OFFLINE! ":GOTO990
  107. 1040 TX$=CHR$(15) :REM TEXT MODE
  108. 1050 OPEN6,4,6:PRINT#6,CHR$(20): REM GRAPHICS MODE FOR STAR PRINTERS
  109. 1060 OPEN4,4:GOSUB1200:PRINT#4,LW$;CL$:PRINT
  110. 1070 FORH=1TONR%:GOSUB1220;:FORJ=1TONC%:PRINT#4,CHR$(207);:FORK=1TOCW%(J)-1
  111. 1080 IFCW%(J)>1THENPRINT#4,CHR$(163);
  112. 1090 NEXT:NEXT:PRINT#4,CHR$(165):IFLR%<2THEN1130
  113. 1100 FORI=1TOLR%-1:GOSUB1220;:FORJ=1TONC%:PRINT#4,CHR$(165);:FORK=1TOCW%(J)-1
  114. 1110 IFCW%(J)>1THENPRINT#4," ";
  115. 1120 NEXT:NEXT:PRINT#4,CHR$(165):NEXT
  116. 1130 NEXT:GOSUB1220;:FORJ=1TONC%:FORK=1TOCW%(J):PRINT#4,CHR$(163);:NEXT:NEXT
  117. 1140 PRINT#4:CLOSE4
  118. 1150 INPUT"PRINT ANOTHER COPY (Y OR N)  N[157][157][157]";A$
  119. 1160 IFLEFT$(A$,1)="Y"THENLC=0:PRINT:GOTO990
  120. 1165 PRINT#6,CHR$(40):CLOSE6
  121. 1170 RETURN
  122. 1180 :
  123. 1190 REM PUTS ROW LABELS IN PLACE
  124. 1200 FORJ=1TOTL%:LL$(J)=LW$:NEXT
  125. 1210 LN=1:FORK=1+INT((LR%-1)/2)TOTL%-1STEPLR%:LL$(K)=RL$(LN):LN=LN+1:NEXT
  126. 1220 PRINT#4,TX$;LL$(LC);:LC=LC+1:RETURN:REM ROW LABELS
  127. 1230 :
  128. 1240 REM *** INSTRUCTIONS
  129. 1250 PRINT"[147]THIS LETS YOU MAKE FORMS ON THE PRINTER:[160][160]"
  130. 1260 PRINT"            COLUMN 1    COLUMN 2"
  131. 1270 PRINT"          [207][183][183][183][183][183][183][183][183][183][183][207][183][183][183][183][183][183][183][183][183][183][183][183][183][165]"
  132. 1280 PRINT"    ROW 1 [165]          [165]             [165]"
  133. 1290 PRINT"          [207][183][183][183][183][183][183][183][183][183][183][207][183][183][183][183][183][183][183][183][183][183][183][183][183][165]"
  134. 1300 PRINT"    ROW 2 [204][175][175][175][175][175][175][175][175][175][175][204][175][175][175][175][175][175][175][175][175][175][175][175][175][165]"
  135. 1310 PRINT"          [165]          [165]             [165]"
  136. 1320 PRINT"    ROW 3 [204][175][175][175][175][175][175][175][175][175][175][204][175][175][175][175][175][175][175][175][175][175][175][175][175][165]"
  137. 1330 PRINT:PRINT"THE FORM CAN BE AS WIDE AS YOUR PRINTER,"
  138. 1340 PRINT"[145]LESS ONE SPACE. THERE ARE 10 PRINTED"
  139. 1350 PRINT"SPACES PER INCH OF FORM WIDTH, AND NINE"
  140. 1360 PRINT"PRINTER LINES PER INCH OF FORM HEIGHT.
  141. 1370 [153]:[153]"YOU CHOOSE AN INDIVIDUAL WIDTH FOR EACH"
  142. 1380 [153]"COLUMN, AND ONE HEIGHT FOR ALL THE ROWS."
  143. 1390 [153]"YOU CAN LABEL THE COLUMNS AND ROWS.
  144. 1400 PRINT:PRINT"FORMS MAY BE SAVED TO DISK. SAVED FORMS
  145. 1410 [153]"CAN BE REPRINTED AND/OR EDITED.
  146. 1420 PRINT"[153]     PRESS ANY KEY TO CONTINUE..."
  147. 1430 GETA$:IFA$=""THEN1430
  148. 1440 RETURN
  149. 1450 :
  150. 1460 REM *** QUIT
  151. 1470 POKE53280,14:PRINT"[154]"
  152. 1480 END
  153. 1490 :
  154. 1500 REM ** FORM LOADER
  155. 1510 PRINT"[153]ENTER THE NAME OF AN EXISTING FORM, OR
  156. 1520 [153]"PRESS <RETURN> TO RETURN TO THE MENU.
  157. 1530 PRINTTAB(23);"[155][163][163][163][163][163][163][163][163][163][163][163][163][163][163][145][145]"
  158. 1540 F$="":INPUT"   EXISTING FORM NAME";F$:F$="F/"+F$:IFF$="F/"THENRUN
  159. 1550 OPEN15,8,15:OPEN2,8,2,F$+",S,R"
  160. 1560 INPUT#15,A,A$:IFA<20THEN1580
  161. 1570 PRINT"[158] ";A$;" ":CLOSE2:CLOSE15:PRINT"[145][145]":GOTO1530
  162. 1580 INPUT#2,LR%,LW,NC%,NR%,PI,PW,TL%:INPUT#2,CL$
  163. 1590 FORJ=1TONC%:INPUT#2,CW%(J):NEXT
  164. 1600 FORJ=1TONR%:INPUT#2,RL$(J):NEXT
  165. 1610 CLOSE2:CLOSE15
  166. 1620 LW$="":FORJ=1TOLW:LW$=LW$+" ":NEXT
  167. 1630 RETURN
  168. 1640 :
  169. 1650 REM ** FORM EDITOR
  170. 1660 PRINT"  YOUR PRINTER WIDTH IN SPACES ";PW;:A=PW:GOSUB2410
  171. 1670 INPUTPW:PW=PW-1:IFPW<1THENPW=80:GOTO1660
  172. 1680 PRINT"   YOUR PAPER LENGTH IN INCHES ";PI;:A=PI:GOSUB2410
  173. 1690 INPUTPI:PL=INT(9*PI):IFPI<1THENPI=11:GOTO1680
  174. 1700 PRINT"[153]THE VERTICAL COLUMNS CAN OCCUPY AS MANY
  175. 1710 [153]"AS";PW;"PRINT SPACES ACROSS THE PAGE.
  176. 1720 PRINT"THERE ARE 10 PRINT SPACES PER INCH.
  177. 1730 [153]"  HOW MANY COLUMNS ON THE FORM ";NC%;:A[178]NC%:[141]2410
  178. 1740 [133]NC%:[139]NC%[179]1[167][153]EM$:[137]1730
  179. 1750 [153]:W[178]0:[129]J[178]1[164]NC%
  180. 1760 [153]"   HOW MANY SPACES IN COLUMN";J;CW%(J);:A[178]CW%(J):[141]2410
  181. 1770 [133]A:[139]A[179]1[167][153]EM$:[137]1760
  182. 1780 CW%(J)[178]A:W[178]W[170]CW%(J):[130]
  183. 1790 [153]"PRINTTHESE COLUMNS TAKE UP";W;"OF THE";PW
  184. 1800 [153]"PRINTAVAILABLE SPACES ON YOUR PRINTER. THERE"
  185. 1810 [153]"ARE";PW[171]W;"SPACES AVAILABLE FOR LABELING
  186. 1820 PRINT"THE HORIZONTAL ROWS.
  187. 1830 [139]W[177]PW[167][153]"SYS TOO WIDE! - TRY AGAIN PRINT":[137]1730
  188. 1840 [133]"         IS THIS O.K. (Y OR N)  YCMDCMDCMD";A$
  189. 1850 [139][200](A$,1)[179][177]"Y"[167][153]:[137]1730
  190. 1860 [153]"PRINTNOW WE WILL SET UP THE HORIZONTAL ROWS,"
  191. 1870 [153]"WHICH CAN FILL UP TO";PL[171]1;"PRINTER LINES."
  192. 1880 [153]"THERE ARE 9 PRINTER LINES PER INCH.
  193. 1890 PRINT"     HOW MANY ROWS ON THE FORM ";NR%;:A=NR%:GOSUB2410
  194. 1900 INPUTNR%:IFNR%<1THENPRINTEM$:GOTO1890
  195. 1910 PRINT:NW=LEN(STR$(NR%))-1:NW$=LEFT$("     ",NW)
  196. 1920 PRINT"HOW MANY PRINTER LINES PER ROW ";LR%;:A=LR%:GOSUB2410
  197. 1930 INPUTLR%:IFLR%<1THENPRINTEM$:GOTO1920
  198. 1940 TL%=NR%*LR%+1
  199. 1950 PRINT"[153]THESE ROWS TAKE UP";TL%;"PRINTER LINES,"
  200. 1960 PRINT"INCLUDING A LINE FOR COLUMN LABELS."
  201. 1970 PRINT"YOUR PAPER HAS";PL;"LINES.";
  202. 1980 IFTL%>PLTHENPRINT:PRINT"[158] ERROR! - TOO LONG FOR THE PAPER [153]":GOTO1890
  203. 1990 PRINT"[157], LEAVING";PL-TL%
  204. 2000 PRINT"LINES UNPRINTED."
  205. 2010 INPUT"         IS THIS O.K. (Y OR N)  Y[157][157][157]";A$
  206. 2020 IFLEFT$(A$,1)<>"Y"THENPRINT:GOTO1890
  207. 2030 PRINT"[153]NOW WE WILL DO THE OPTIONAL LABELS.
  208. 2040 [153]"YOUR FORM HAS";NC%;"VERTICAL COLUMNS,
  209. 2050 PRINT"WHICH YOU CAN LABEL IF YOU WISH.
  210. 2060 [133]"    LABEL THE COLUMNS (Y OR N)  YCMDCMDCMD";A$
  211. 2070 [139][200](A$,1)[179][177]"Y"[167]CL$[178]" ":[137]2200
  212. 2080 [141]2430:LS[178]0:[129]J[178]1[164]NC%
  213. 2090 [153]"LABEL FOR COLUMN";J;"-";CW%(J);"SPACES";
  214. 2100 [139]CW%(J)[179]2[167][153]"CMD ";
  215. 2110 [153]:[153]"  ";Q$;[199](20);Q$;
  216. 2120 [139]CL$[178]""[167][129]K[178]1[164]CW%(J):[153]" ";:[130]:[137]2150
  217. 2130 [139][195](CL$)[179]W[167]CL$[178]CL$[170]" ":[137]2130
  218. 2140 [153][202](CL$,LS[170]1,CW%(J));:LS[178]LS[170]CW%(J)
  219. 2150 A[178][185](0):[153]Q$:[139]A[177]38[167][153]"ON";
  220. 2160 [153]"ON";:[151]K1,29:[151]K2,1:[133]A$
  221. 2170 [139][195](A$)[179][177]CW%(J)[167][153]"SYS WRONG WIDTH! - TRY AGAIN ":[137] 2090
  222. 2180 L$[178]L$[170]A$:[130]:CL$[178]L$
  223. 2190 :
  224. 2200 [133]"       LABEL THE ROWS (Y OR N)  YCMDCMDCMD";A$
  225. 2210 [139][200](A$,1)[179][177]"Y"[167]2390:[143] THIS DEST OK??
  226. 2220 [153]"PRINTTHE FORM IS";W;"SPACES WIDE, LEAVING"
  227. 2230 [153]"CMD";PW[171]W;"SPACES FOR LABELING ITS";NR%:[153]"HORIZONTAL ROWS.
  228. 2240 PRINT"  HOW MANY TO ALLOW FOR LABELS ";LW;:A=LW:GOSUB2410
  229. 2250 INPUTLW:IFLW<1THENPRINTEM$:GOTO2240:REM MAYBE NOT NEEDED
  230. 2260 IFLW>PW-WTHENPRINT"       [158] ERROR! -";PW-W;"[157] MAXIMUM ":GOTO2240
  231. 2270 LW$="":FORJ=1TOLW:LW$=LW$+" ":NEXT
  232. 2280 GOSUB2430
  233. 2290 FORJ=1TONR%
  234. 2300 RL$=RL$(J)+LW$:PRINT"LABEL FOR ROW";J;"-";LW;"SPACES";
  235. 2310 IFLW<2THENPRINT"[157] ";
  236. 2320 PRINT:PRINT"  ";Q$;MID$(RL$,1,LW);
  237. 2330 A=POS(0):PRINTQ$:IFA>38THENPRINT"[145]";
  238. 2340 PRINT"[145]";:POKEK1,29:POKEK2,1:INPUTRL$
  239. 2350 IFLEN(RL$)<>LWTHENPRINT"[158] WRONG LENGTH!! - TRY AGAIN ":GOTO2300
  240. 2360 RL$(J)=RL$
  241. 2370 NEXT
  242. 2380 PRINT"[153]YOUR FORM IS FINISHED!"
  243. 2390 RETURN
  244. 2400 :
  245. 2410 PRINTLEFT$("[157][157][157][157][157][157][157][157]",2+LEN(STR$(A)));:RETURN:REM ALIGN INPUT
  246. 2420 :
  247. 2430 PRINT"[153]ENTER THE LABELS RIGHT NOW. YOU MUST"
  248. 2440 PRINT"KEEP THEM BETWEEN THE QUOTATION MARKS,"
  249. 2450 PRINT"BUT YOU CAN CENTER THEM OR POSITION"
  250. 2460 PRINT"THEM AS YOU LIKE."
  251. 2470 RETURN
  252. 2480 :
  253. 2490 REM ** FORM SAVER
  254. 2500 PRINT#2,LR%;R$;LW;R$;NC%;R$;NR%;R$;PI;R$;PW+1;R$;TL%
  255. 2510 PRINT#2,Q$+CL$+Q$
  256. 2520 FORJ=1TONC%:PRINT#2,CW%(J):NEXT
  257. 2530 FORJ=1TONR%:PRINT#2,Q$+RL$(J)+Q$:NEXT
  258. 2540 CLOSE2:CLOSE15
  259. 2550 RETURN
  260.